package com.darrenchan.netease04

object XieBianTest {
  def main(args: Array[String]): Unit = {

    //MyList[Any]    MyList[String]
    val l1: MyList[Any] = new MyList[String]("a", null)
    val l2: MyList[String] = new MyList[String]("a", new MyList[String]("b", null))


  }
}


//自定义List
class MyList[+T](val head: T, val tail: MyList[T]){
  //在最前面追加一个元素
//  def prepend(newHead: T) = new MyList[T](newHead, this)//这么写会编译不通过


  //U就是Double，T就是Int
  //this就是MyList[T]
  //返回结果MyList[U]
  //如果U是T的父类，那么MyList[U]就是MyList[T]的父类，所以最后赋值MyList[U] = MyList[T]没毛病
  def prepend[U >: T](newHead: U) = new MyList[U](newHead, this)
}
